package com.qingsong.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.qingsong.dto.RoleInsertDTO;
import com.qingsong.dto.RolePageDTO;
import com.qingsong.dto.RoleUpdateDTO;
import com.qingsong.entity.Role;
import com.qingsong.vo.MenuSimpleListVO;
import com.qingsong.vo.RoleSimpleListVO;

import java.util.List;

/**
 * 角色表 服务层。
 *
 * @author qingsong
 * @since 2024-12-22
 */
public interface RoleService extends IService<Role> {
    boolean insert(RoleInsertDTO dto);
    Role select(Long id);
    List<RoleSimpleListVO> simpleList();
    Page<Role> page(RolePageDTO dto);
    boolean update(RoleUpdateDTO dto);
    boolean delete(Long id);
    boolean deleteBatch(List<Long> ids);
    /**
     * 按主键查询该角色的全部菜单ID列表
     * @param id 角色主键
     * @return 该角色的全部菜单ID列表
     */
    List<Long> listMenuIds(Long id);

    /**
     * 按主键修改该角色的菜单列表
     * @param dto 角色修改DTO
     */
    boolean updateMenus(RoleUpdateDTO dto);
}
